'''
@Project ：my_python_project 
@File    ：2.py
@IDE     ：PyCharm 
@Author  ：xionglinhui
@Date    ：2024/8/22 上午8:25 
'''
def people(name):
    print('大飞飞%s准备吃东西啦...' %name)
    while True:
        x = yield None
        print('大飞飞%s吃了 %s' %(name,x))

g = people('lulucy')  # 得到了一个迭代器对象，因为函数体有yield，所以也叫做生成器
print(g)   # 输出：<generator object dog at 0x000001D33ACD5F50>

res = next(g)   # 第一次执行next或send，是触发函数体的运行，执行到x=yield时鼠标光标会移动到x=yield正后方，返回值为None（打印res可知）,等待生成器再一次传值,代码被挂起
print(res)  # 获取到yield后面的返回值None

print('=========================')

next(g)  # 触发代码继续运行，先执行“print('大飞飞%s吃了 %s' %(name,x))”，执行到下一个循环到yield时代码再次挂起，等待下一次传值
g.send('鸡公煲')  # yield接收到的值为“鸡公煲”，此时将“鸡公煲”赋值给了x，出发代码继续运行，再次执行“print('大飞飞%s吃了 %s' %(name,x))”
g.send('三鲜煲')
g.close()        # 关闭生成器对象，后面无法继续传值
g.send('1111')   # 继续传值报错，StopIteration